package com.dd.common.convert;

import com.dd.common.dto.system.user.SysUserCreateDTO;
import com.dd.common.dto.system.user.SysUserRegisterDTO;
import com.dd.common.dto.system.user.SysUserSelfUpdateDTO;
import com.dd.common.dto.system.user.SysUserUpdateDTO;
import com.dd.common.vo.SysUserDetailVO;
import com.dd.common.vo.SysUserLoginVO;
import com.dd.common.entity.SysUser;
import com.dd.common.vo.SysUserVO;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface SysUserConvert {
    // DTO → Entity
//    UserEntity toEntity(RegisterUserDTO dto);
//    UserEntity toEntity(UpdateUserDTO dto);
//
//    // Entity → VO
//    UserDetailVO toDetailVO(UserEntity entity);
//    UserListVO toListVO(UserEntity entity);
//
//    // 多个字段合并（可自定义逻辑）
//    @Mapping(target = "isOnline", expression = "java(entity.getLastLoginTime() != null && entity.getLastLoginTime().isAfter(java.time.LocalDateTime.now().minusHours(1)))")
//    UserDetailVO toDetailVOWithOnlineStatus(UserEntity entity);

    // DTO → Entity（用于保存）
//    @BeanMapping(ignoreByDefault = false)
    SysUser dtoToEntity(SysUserRegisterDTO dto);
    SysUser dtoToEntity(SysUserCreateDTO dto);
    SysUser dtoToEntity(SysUserUpdateDTO dto);

    // Entity → VO（用于查询返回）
    SysUserVO entityToVO(SysUser entity);
    SysUserDetailVO entityToDetailVO(SysUser entity);
    SysUserLoginVO entityToLoginVO(SysUser entity);

    SysUser dtoToEntity(SysUserSelfUpdateDTO dto);
//
//    // Entity → DTO（用于更新时回填）
//    UserUpdateDTO entityToUpdateDTO(UserEntity entity);
}
